package org.example.mallchat.websocket.service;

import io.netty.channel.Channel;
import me.chanjar.weixin.common.error.WxErrorException;

/**
 * @author: zzh
 * @date: 2024/12/18 14:44:35
 * @version: 1.0
 */
//主要就是实现websocket的相关功能
public interface WebSocketService {
    /**
     * 连接websocket 绑定channel
     * @param channel
     */
    void connectChannel(Channel channel);

    /**
     * 登录 请求ticket 二维码
     * @param channel
     */
    void handleLoginTicket(Channel channel) throws WxErrorException;

    /**
     * 用户下线
     * @param channel
     */
    void disconnectChannel(Channel channel);


    /**
     * 保存openId和验证码
     * @param openId
     * @param code
     */
    void saveOpenIdCode(String openId, Integer code);

    /**
     * 根据openId获取验证码
     * @param openId
     */
    Integer getCodeByOpenId(String openId);

    /**
     * 扫码登录成功
     * @param codeByOpenId
     * @param id
     */
    void scanLoginSuccess(Integer codeByOpenId, Long id);

    /**
     * 发送消息给前端等待用户点击授权
     * @param loginCode
     */
    void sendMsgWaitUserClickAuth(Integer loginCode);

    /**
     * token认证登录
     * @param channel
     * @param token
     */
    void authorize(Channel channel, String token);

    /**
     * 发送黑名单消息给所有用户
     * @param uid
     */
    void sendBlackMsgToAll(Long uid);
}
